'use strict'

const jwt = require('jsonwebtoken')
const config = require('../config')
// 游客可见
// const whiteList = require('../lib/whiteList')

module.exports = async (ctx, next) => {
    // 将 token 中的数据解密后存到 ctx 中
    try {
        if (typeof ctx.request.headers.authorization === 'string') {
            const token = ctx.request.headers.authorization.slice(7)
            ctx.jwtData = jwt.verify(token, config.secret)
        }
        // 为什么这里不加await 就会出现404
        await next()
    } catch (err) {
        // 这里会catch到router里throw的错误 是因为上面有有await吧
        throw {code: err.code ? err.code : 500, message: err.message}
    }
}
